home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 22 / Cream of the Crop 22.iso / program / tdk_v120.zip / FOSUNIT.PAS < prev    next >
Pascal/Delphi Source File  |  1996-07-15  |  6KB  |  236 lines

  1. {
  2.  ▀▀▀▀▀▀▀▀  ▀▀▀▀▀▀    ▀▀   ▀▀
  3.    ▀▀     ▀▀   ▀▀   ▀▀  ▀▀
  4.   ▀▀     ▀▀   ▀▀▀  ▀▀▀▀▀  The DoorKit!
  5.  ▀▀     ▀▀   ▀▀   ▀▀  ▀▀
  6. ▀▀     ▀▀▀▀▀▀    ▀▀    ▀▀
  7. The BBS Door Development Kit By The People - For The People!
  8.  
  9.  
  10.    Feel free to modify or optimize this code at will. All I ask is that if
  11.    find a better way to do things (and you will), please send me a copy of
  12.    your modifications. Thanks in advance!....Larry L. Athey....}
  13.  
  14. {$G+,A+}
  15. UNIT FOSUNIT;
  16.  
  17. INTERFACE
  18.  
  19. FUNCTION  F_Init(Comport : BYTE) : BOOLEAN;
  20. PROCEDURE F_Close(Comport : BYTE);
  21. PROCEDURE F_Parms(Comport : BYTE; Baud : WORD; DataBits : BYTE; Parity : CHAR; StopBit : BYTE);
  22. PROCEDURE F_SendChar(Comport : BYTE; C : CHAR);
  23. PROCEDURE F_Write(Comport : BYTE; S : STRING);
  24. PROCEDURE F_Writeln(Comport : BYTE; S : STRING);
  25. FUNCTION  F_ReadChar(Comport : BYTE) : CHAR;
  26. PROCEDURE F_Dtr(Comport : BYTE; State : BOOLEAN);
  27. PROCEDURE F_Flow(Comport : BYTE; State : BOOLEAN);
  28. FUNCTION  F_CD(Comport : BYTE) : BOOLEAN;
  29. PROCEDURE F_Kill_Out(Comport : BYTE);
  30. PROCEDURE F_Kill_In(Comport : BYTE);
  31. PROCEDURE F_Flush(Comport : BYTE);
  32. FUNCTION  F_Avail(Comport : BYTE) : BOOLEAN;
  33. FUNCTION  F_OkToSend(Comport : BYTE) : BOOLEAN;
  34. FUNCTION  F_Empty(Comport : BYTE) : BOOLEAN;
  35.  
  36. IMPLEMENTATION
  37.  
  38. {───────────────────────────────────────────────────────────────────────────}
  39. FUNCTION F_Init(Comport : BYTE) : BOOLEAN; assembler;
  40. asm
  41.   mov  ah,4
  42.   mov  dl,[comport]
  43.   XOR  dh,dh
  44.   DEC  dl
  45.   XOR  bx,bx
  46.   INT  14h
  47.   cmp  ax,1954h
  48.   jne  @@no
  49. @@yes :
  50.   mov  al,1
  51.   jmp  @@EXIT
  52. @@no :
  53.   XOR  al,al
  54. @@EXIT :
  55. END;
  56. {───────────────────────────────────────────────────────────────────────────}
  57. PROCEDURE F_Close(Comport : BYTE); assembler;
  58. asm
  59.   mov  ah,5
  60.   mov  dl,[comport]
  61.   XOR  dh,dh
  62.   DEC  dl
  63.   INT  14h
  64. END;
  65. {───────────────────────────────────────────────────────────────────────────}
  66. PROCEDURE F_Parms(ComPort : BYTE; Baud : WORD; DataBits : BYTE; Parity : CHAR; StopBit : BYTE);
  67. VAR
  68.   c : BYTE;
  69. BEGIN
  70.   IF baud = 0 THEN EXIT;
  71.   c := 0;
  72.   c := (databits - 5);                       {000000xx}
  73.   c := c OR ((stopbit - 1)SHL 2);            {00000x00}
  74.   CASE UPCASE(Parity) OF                     {000xx000}
  75.    {'N': c:=c or $00;}
  76.     'O' : c := c OR $08;
  77.     'E' : c := c OR $18;
  78.   END;
  79.   CASE Baud OF                               {xxx00000}
  80.     19200 : c := c OR $00;  {0000-0000}
  81.     38400 : c := c OR $20;  {0010-0000}
  82.     300   : c := c OR $40;  {0100-0000}
  83.     600   : c := c OR $60;  {0110-0000}
  84.     1200  : c := c OR $80;  {1000-0000}
  85.     2400  : c := c OR $A0;  {1010-0000}
  86.     4800  : c := c OR $C0;  {1100-0000}
  87.     9600  : c := c OR $E0;  {1110-0000}
  88.     ELSE IF baud > 38400 THEN c := c OR $20;
  89.   END;
  90.   asm
  91.     XOR  ah,ah;
  92.     mov  al,[c];
  93.     mov  dl,[comport]
  94.     XOR  dh,dh
  95.     DEC  dx;
  96.     INT  14h;
  97.   END;
  98. END;
  99. {───────────────────────────────────────────────────────────────────────────}
  100. PROCEDURE F_Dtr(Comport : BYTE; State : BOOLEAN); assembler;
  101. asm
  102.   mov  ah,6
  103.   mov  dl,[comport]
  104.   XOR  dh,dh
  105.   DEC  dl
  106.   mov  al,[state]
  107.   INT  14h
  108. END;
  109. {───────────────────────────────────────────────────────────────────────────}
  110. FUNCTION F_CD(Comport : BYTE) : BOOLEAN; assembler;
  111. asm
  112.   mov  ah,3
  113.   mov  dl,[comport]
  114.   XOR  dh,dh
  115.   DEC  dl
  116.   INT  14h
  117.   mov  bl,al
  118.   XOR  al,al
  119.   AND  bl,80h
  120.   cmp  bl,80h
  121.   jne  @@EXIT
  122.   INC  al
  123. @@EXIT :
  124. END;
  125. {───────────────────────────────────────────────────────────────────────────}
  126. PROCEDURE F_Flow(Comport : BYTE; State : BOOLEAN); assembler;
  127. asm
  128.   mov  ah,0Fh
  129.   mov  dl,[comport]
  130.   XOR  dh,dh
  131.   DEC  dl
  132.   XOR  al,al
  133.   cmp  [state],0
  134.   je   @@off
  135.   mov  al,255
  136. @@off :
  137.   INT  14h
  138. END;
  139. {───────────────────────────────────────────────────────────────────────────}
  140. PROCEDURE F_Kill_Out(Comport : BYTE); assembler;
  141. asm
  142.   mov  ah,9
  143.   mov  dl,[comport]
  144.   XOR  dh,dh
  145.   DEC  dl
  146.   INT  14h
  147. END;
  148. {───────────────────────────────────────────────────────────────────────────}
  149. PROCEDURE F_Kill_In(Comport : BYTE); assembler;
  150. asm
  151.   mov  ah,10
  152.   mov  dl,[comport]
  153.   XOR  dh,dh
  154.   DEC  dl
  155.   INT  14h
  156. END;
  157. {───────────────────────────────────────────────────────────────────────────}
  158. PROCEDURE F_Flush(Comport : BYTE); assembler;
  159. asm
  160.   mov  ah,8
  161.   mov  dl,[comport]
  162.   XOR  dh,dh
  163.   DEC  dl
  164.   INT  14h
  165. END;
  166. {───────────────────────────────────────────────────────────────────────────}
  167. FUNCTION  F_Avail(Comport : BYTE) : BOOLEAN; assembler;
  168. asm
  169.   mov  ah,3
  170.   mov  dl,[comport]
  171.   XOR  dh,dh
  172.   DEC  dl
  173.   INT  14h
  174.   AND  ah,1
  175.   mov  al,ah
  176. END;
  177. {───────────────────────────────────────────────────────────────────────────}
  178. FUNCTION  F_OkToSend(Comport : BYTE) : BOOLEAN; assembler;
  179. asm
  180.   mov  ah,3
  181.   mov  dl,[comport]
  182.   XOR  dh,dh
  183.   DEC  dl
  184.   INT  14h
  185.   AND  ah,20h
  186.   SHR  ah,5
  187.   mov  al,ah
  188. END;
  189. {───────────────────────────────────────────────────────────────────────────}
  190. FUNCTION  F_Empty(Comport : BYTE) : BOOLEAN; assembler;
  191. asm
  192.   mov  ah,3
  193.   mov  dl,[comport]
  194.   XOR  dh,dh
  195.   DEC  dl
  196.   INT  14h
  197.   AND  ah,40h
  198.   SHR  ah,6
  199.   mov  al,ah
  200. END;
  201. {───────────────────────────────────────────────────────────────────────────}
  202. PROCEDURE F_SendChar(Comport : BYTE; C : CHAR); assembler;
  203. asm
  204.   mov  ah,1
  205.   mov  dl,[comport]
  206.   XOR  dh,dh
  207.   DEC  dl
  208.   mov  al,[c]
  209.   INT  14h
  210. END;
  211. {───────────────────────────────────────────────────────────────────────────}
  212. PROCEDURE F_Write(Comport : BYTE; S : STRING);
  213. VAR
  214.   i : BYTE;
  215. BEGIN
  216.   FOR i := 1 TO LENGTH(S) DO F_SendChar(Comport,S[i]);
  217. END;
  218. {───────────────────────────────────────────────────────────────────────────}
  219. PROCEDURE F_Writeln(Comport : BYTE; S : STRING);
  220. BEGIN
  221.   F_Write(comport,s);
  222.   F_SendChar(ComPort,#13);
  223.   F_SendChar(ComPort,#10);
  224. END;
  225. {───────────────────────────────────────────────────────────────────────────}
  226. FUNCTION F_ReadChar(Comport : BYTE) : CHAR; assembler;
  227. asm
  228.   mov  ah,2
  229.   mov  dl,[comport]
  230.   XOR  dh,dh
  231.   DEC  dl
  232.   INT  14h  {al=char}
  233. END;
  234. {───────────────────────────────────────────────────────────────────────────}
  235. END.
  236.